Apache Log4j 2 Log4j

Apache Log4j 2 là phiên bản nối tiếp của Log4j 1, được phát hành như một bản GA vào tháng 7 năm 2014. Bộ khung này được viết lại từ đầu, lấy cảm hứng từ nhiều giải pháp ghi nhật ký trước đó, trong đó có Log4j 1 và java.util.logging. Những khác biệt chính[7][8] so với Log4j 1 là:

  • Tăng độ tin cậy. Thông điệp (message) không bị mất khi cấu hình lại bộ khung như đã xuất hiện ở Log4j 1 hoặc Logback
  • Khả năng mở rộng: Log4j 2 hỗ trợ hệ thống trình cắm cho phép người dùng định nghĩa và cấu hình các thành phần mới tùy ý
  • Cú pháp cấu hình được đơn giản hóa
  • Hỗ trợ cấu hình theo định dạng xml, json, yaml và properties
  • Nâng cấp Bộ lọc (Filter)
  • Property lookup support for values defined in the configuration file, system properties, environment variables, the ThreadContext Map, and data present in the event
  • Hỗ trợ nhiều APIs: Log4j 2 có thể sử dụng đồng thời trên các ứng dụng đã có các API Log4j 2, Log4j 1.2, SLF4J, Commons Logging và java.util.logging (JUL).
  • Tùy chỉnh cấp độ ghi nhật ký
  • Hỗ trợ "ghi lười" ("lazy logging") nhờ công nghệ lambda theo dạng Java 8
  • Đánh dấu (Marker)
  • Hỗ trợ đối tượng Message do người dùng tự định nghĩa
  • "Garbage-free or low garbage" trong cấu hình thông dụng
  • Tăng tốc độ

Một trong những tính năng nổi bật nhất của Log4j 2 là khả năng thực hiện ghi nhật ký bất đồng bộ ("Asynchronous Logging").[9] Log4j 2 sử dụng LMAX Disruptor.[10] Sử dụng thư viện giúp hạn chế khóa kernel và tăng tốc độ khi nhật ký lên gấp 12 lần. Ví dụ, trong cùng điều kiện môi trường máy Log4j 2 có thể ghi hơn 18.000.000 thông điệp mỗi giây, trong khi các bộ khung khác như Logback và Log4j 1 chỉ có thể ghi dưới 2.000.000 thông điệp mỗi giây.